<?php

namespace app\admin\controller;

use think\Controller;
use think\Db;

class Test extends Controller
{
    public function index()
    {
        // 快捷查询
//        $row = Db::name('user')->where('id', 5)->find();
//        $row = Db::name('user')->where('id','<' ,5)->find();

//        $row = Db::name('user')
////            ->where('id','<=' ,5)
//            ->where('id','in', [1,3,5])
//            ->select();

//        $row = Db::name('user')
//            ->where('age','>' , '18')
//            ->where('name','like', '%王%')
//            ->select();

//        $row = Db::name('user')
//            ->where(['sex'=>'2'])
//            ->whereOr(['province'=>'上海'])
//            ->select();

        // 批量
//        $row = Db::name('user')
//            ->where([
//                'id'=> ['between', '10,20'],
//                'sex' => ['eq', '0']
//            ])
//            ->select();

//        $row = Db::name('user')
//            ->where('sex','eq', '0')
//            ->where('id',['between', '1,3'], ['in',[6,66,666]], 'or')
//            ->select();

        // 区间查询
//        $row = Db::name('user')
//            ->where('id', ['<', 2], ['>', 15])
//            ->select();

        // 手动多表
//        $row = Db::field('u.name uname, l.name lname')
//            ->table(['user' => 'u', 'lover' => 'l'])
//            ->where('u.id=l.user_id')
//            ->select();

        // JOIN
//        $row = Db::table('user')
//            ->alias('u')
//            ->field(['u.name'=>'uname', 'l.name'=>'lname'])
//            ->join('lover l', 'u.id=l.user_id')
//            ->order('uname')
//            ->select();

        // 视图 仅仅支持查询查询 多表增删改需要使用关联模型
//        view('数据表', '字段', '表的JOIN条件' 'JOIN方式')
//        $row = Db::view('user', ['name'=>'uname'])
//            ->view('lover', ['name'=>'lname'], 'user.id=lover.user_id')
//            ->select();

        // 聚合查询
//        $row = Db::table('user')->avg('age');
        // 各个省份内 有多少人
//        $row = Db::table('user')
//            ->field('province, count(id)')
//            ->group('province')
//            ->select();

//        $row = Db::table('user')
//            ->field('province, group_concat(name) names')
//            ->group('province')
//            ->select();

//        fetchSql 方式:
////        1). 构建子查询SQL
//        $query = Db::table('hc_user')
//            ->field('id,name,sex,age')
//            ->where('sex','eq', 0)
//            ->fetchSql(true)
//            ->select();
////        echo $query;
////        2). 组装完整SQL 去执行
//        $row = Db::table('(' .$query . ') u')
//            ->where('u.age','lt', '18')
//            ->order('id', 'desc')
//            ->select();

//        buildSql 方式:
//        1). 构建子查询SQL
        $query = Db::table('hc_user')
            ->field('id,name,sex,age')
            ->where('sex','eq', 0)
            ->buildSql();
//        var_dump($query);
//        2). 组装完整SQL 去执行
        $row = Db::table($query.' u')
            ->where('u.age','<>', '18')
            ->order('id', 'desc')
            ->select();
        var_dump($row);
    }
}
